<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>
    // var arr = [4, 5, 6, "world", 5, 6, 7, 8, 9, 5];
    // console.log(arr)

    // 功能：根据数据，查索引
    // 参数：要查询的数据
    // 返回值：索引
    // 是否改变原数据：否
    // var res = arr.indexOf(5)
    // var res = arr.indexOf(5, 3)
    // var res = arr.indexOf(5, 6)
    // var res = arr.indexOf(5, 11)
    // console.log(res)

    // 功能：遍历数组
    // 参数：函数，这个函数又有三个形参
        // 形参1：数组中的数据
        // 形参2：索引
        // 形参3：数组自身
    // 返回值：无
    // 是否改变原数据：否
    // var res = arr.forEach(function(val, idx, self){
    //     console.log(val);
    // })
    // console.log(res);


    // 功能：遍历数组，并将修改之后的新数据放在一个数组中返回
    // 参数：函数，这个函数又有三个形参
        // 形参1：数组中的数据
        // 形参2：索引
        // 形参3：数组自身
    // 返回值：长度等同于老数组的新数组，内的数据是每次作为参数的函数的返回值
    // 是否改变原数据：否
    // var res = arr.map( function(val, idx, self){
    //     // console.log(self)
    //     return val * 1.3;
    // } )
    // console.log(res)
    // console.log(res === arr)

    // 功能：遍历数组，并过滤数组中的数据
    // 参数：回调函数，这个函数又有三个形参
        // 形参1：数组中的数据
        // 形参2：索引
        // 形参3：数组自身
    // 返回值：新数组，内的数据是每次回调函数的返回值为true时，遍历到的数据
    // 是否改变原数据：否
    // var res = arr.filter(function(val,idx,self){
    //     // console.log(self)
    //     return typeof val === "number";
    // })
    // console.log(res)

    // 功能：遍历数组，并查询数组中数据是否匹配条件，只要有一个是true就是true
    // 参数：回调函数，这个函数又有三个形参
        // 形参1：数组中的数据
        // 形参2：索引
        // 形参3：数组自身
    // 返回值：布尔值，只要回调函数有一个返回true，就是true
    // 是否改变原数据：否
    // var res = arr.some(function(val,idx,self){
    //     console.log(val)
    //     return val === "world";
    // })
    // console.log(res)

    // 功能：遍历数组，并查询数组中所有的数据是否匹配条件，全部是true，才是true
    // 参数：回调函数，这个函数又有三个形参
        // 形参1：数组中的数据
        // 形参2：索引
        // 形参3：数组自身
    // 返回值：布尔值，必须回调函数全部返回true，才是true
    // 是否改变原数据：否
    // var res = arr.every(function(val,idx,self){
    //     console.log(val);
    //     return typeof val === "number";
    // })
    // console.log(res)
    // console.log(arr)


    // ============
    // 了解
    // 功能：遍历，归并
    // 参数：
        // 参数1：回调函数，这个函数又有三个形参
            // 形参1：上一次回调函数的返回值
                // 有初始值，就是初始值
                // 没有初始值，就是数组的第一个数据
            // 形参2：数据
            // 形参3：索引
            // 形参4：数组自身
        // 参数2：初始值，可以省略
    // var res = arr.reduce( function(start, val, idx,self){
    //     console.log(start, val);
    //     return "world"
    // }, "初始值");
    // console.log(res);

    var arr2 = [4,5,6,7,8,9];
    console.log(arr2);

    var res = arr2.reduce(function(start, val){
        return start + val;
    })
    console.log(res);

    console.log(arr2);



    // 作为参数的函数，叫回调函数
</script>
</html>